home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-02-26 | 6.7 KB | 221 lines | [TEXT/MPS ] |
- {********************************************
- ; File: MidiSynth.h
- ;
- ; Copyright Apple Computer, Inc. 1991
- ; All Rights Reserved
- ;
- ********************************************}
- Unit MIDISynth;
-
- Interface
- Uses
- Types;
-
- Const
- { Error Codes }
- msAlreadyStarted = $2301; { MidiSynth already started. }
- msNotStarted = $2302; { MidiSynth never started. }
- msNoDPMem = $2303; { Can't get direct page memory. }
- msNoMemBlock = $2304; { Can't get memory block. }
- msNoMiscTool = $2305; { Misc Tools not started. }
- msNoSoundTool = $2306; { Sound Tools not started. }
- msGenInUse = $2307; { Ensoniq generator in use. }
- msBadPortNum = $2308; { Illegal port number. }
- msPortBusy = $2309; { Port is busy. }
- msParamRangeErr = $230a; { Parameter range error. }
- msMsgQueueFull = $230b; { Message queue full. }
- msRecBufFull = $230c; { Rec buffer is full. }
- msOutputDisabled = $230d; { MIDI output disabled. }
- msMessageError = $230e; { Message error. }
- msOutputBufFull = $230f; { MIDI output buffer is full. }
- msDriverNotStarted = $2310; { Driver not started. }
- msDriverAlreadySet = $2311; { Driver already set. }
- msDevNotAvail = $2380; { the requested device is not available }
- msDevSlotBusy = $2381; { requested slot is already in use }
- msDevBusy = $2382; { the requested device is already in use }
- msDevOverrun = $2383; { device overrun by incoming MIDI data }
- msDevNoConnect = $2384; { no connection to MIDI }
- msDevReadErr = $2385; { framing error in received MIDI data }
- msDevVersion = $2386; { ROM version is incompatible with device driver }
- msDevIntHndlr = $2387; { conflicting interrupt handler is installed }
-
- Type
- { record definitions }
- msDirectPageHndl = ^msDirectPagePtr;
- msDirectPagePtr = ^msDirectPage;
- msDirectPage = Record
- reserved1 : Array [0..$0b] of PackedByte;
- MpacketStat : Integer;
- MpacketData1 : Integer;
- MpacketData2 : Integer;
- SeqClockFrac : PackedByte;
- SeqClockInt : LongInt;
- reserved2 : Array [$17..$30] of PackedByte;
- SeqItemStat : PackedByte;
- SeqItemData1 : PackedByte;
- SeqItemData2 : PackedByte;
- reserved3 : Array [$34..$3e] of PackedByte;
- MetroVol : PackedByte;
- reserved4 : Array [$40..$e3] of PackedByte;
- MetroFreq : PackedByte;
- reserved5 : Array [$e6..$e9] of PackedByte;
- SeqItemTrack : PackedByte;
- reserved6 : PackedByte;
- PacketBytes : PackedByte;
- reserved7 : Array [$ed..$100] of PackedByte;
- end;
-
- GetMSDataOutputRecHndl = ^GetMSDataOutputRecPtr;
- GetMSDataOutputRecPtr = ^GetMSDataOutputRec;
- GetMSDataOutputRec = Record
- directPage : msDirectPagePtr;
- reserved : LongInt;
- End;
-
- MeasureRecHndl = ^MeasureRecPtr;
- MeasureRecPtr = ^MeasureRec;
- MeasureRec = Record
- measureNumber : Integer;
- beatNumber : Integer;
- msRemainder : Integer;
- End;
-
- CallBackRecHndl = ^CallBackRecPtr;
- CallBackRecPtr = ^CallBackRec;
- CallBackRec = Record
- EndSeq : procptr;
- UserMeter : procptr;
- Mstart : procptr;
- Mstop : procptr;
- PacketIn : procptr;
- SeqEvent : procptr;
- SysEx : procptr;
- PacketOut : procptr;
- PgmChange : procptr;
- Mcontinue : procptr;
- SMarker : procptr;
- RecBufFull : procptr;
- Reserved1 : procptr;
- Reserved2 : procptr;
- End;
-
- SeqPlayRecHndl = ^SeqPlayRecPtr;
- SeqPlayRecPtr = ^SeqPlayRec;
- SeqPlayRec = Record
- PbufStart : ptr;
- Reserved : Longint;
- RbufStart : ptr;
- RbufEnd : ptr;
- SeqFlags : Integer;
- theClock : Longint;
- End;
-
- EnvelopeRecHndl = ^EnvelopeRecPtr;
- EnvelopeRecPtr = ^EnvelopeRec;
- EnvelopeRec = Record
- AttackLevel : PackedByte;
- AttackRate : PackedByte;
- Decay1Level : PackedByte;
- Decay1Rate : PackedByte;
- Decay2Level : PackedByte;
- Decay2Rate : PackedByte;
- SustainLevel : PackedByte;
- Decay3Rate : PackedByte;
- Release1Level : PackedByte;
- Release1Rate : PackedByte;
- Release2Level : PackedByte;
- Release2Rate : PackedByte;
- Release3Rate : PackedByte;
- DecayGain : PackedByte;
- VelocityGain : PackedByte;
- PitchBendRange : PackedByte;
- End;
-
- WavelistRecHndl = ^WavelistRecPtr;
- WavelistRecPtr = ^WavelistRec;
- WavelistRec = Record
- TopKey : PackedByte;
- OscConfig : PackedByte;
- Stereo : PackedByte;
- Detune : PackedByte;
- WaveAddrA : PackedByte;
- WaveSizeA : PackedByte;
- VolumeA : PackedByte;
- OctaveA : PackedByte;
- SemitoneA : PackedByte;
- FindTuneA : PackedByte;
- WavAddrB : PackedByte;
- WaveSizeB : PackedByte;
- VolumeB : PackedByte;
- OctaveB : PackedByte;
- SemitoneB : PackedByte;
- FineTuneB : PackedByte;
- End;
-
- InstrumentRecHndl = ^InstrumentRecPtr;
- InstrumentRecPtr = ^InstrumentRec;
- InstrumentRec = Record
- gen1EnvRec : EnvelopeRec;
- gen1WaveRecs : Array[1..8] of WavelistRec;
- gen2EnvRec : EnvelopeRec;
- gen2WaveRecs : Array [1..8] of WavelistRec;
- End;
-
- SeqItemRecHndl = ^SeqItemRecPtr;
- SeqItemRecPtr = ^SeqItemRec;
- SeqItemRec = Record
- TrackNum : PackedByte;
- TimeStampHigh : PackedByte;
- TimeStampLow : PackedByte;
- TimeStampMid : PackedByte;
- DataByteCount : PackedByte;
- MIDIStat : PackedByte;
- DataByte1 : PackedByte;
- DataByte2 : PackedByte;
- end;
-
- { available calls }
- Procedure MSBootInit;
- Procedure MSStartUp;
- Procedure MSShutDown;
- Function MSVersion : Integer;
- Procedure MSReset;
- Function MSStatus : Boolean;
-
- Function GetMSData : GetMSDataOutputRec;
- Procedure SetCallBack(buffer : CallBackRecPtr);
- Procedure MSSuspend;
- Procedure MSResume;
- Procedure InitMIDIDriver(slot, internal, userID : Integer; driver : procptr);
- Procedure RemoveMIDIDriver;
- Procedure SetMIDIPort(inputDisable, outputDisable : integer);
- Procedure SetMIDIMode(mode : integer);
- Procedure SetBasicChannel(channel : Integer);
- Procedure SetVelComp(velocity : Integer);
- Procedure SysExOut(message : ptr; delay : integer; monitor : procptr);
- Procedure SetInstrument(inst : InstrumentRecPtr; number : integer);
- Procedure PlayNote(channel, noteNum, volume : integer);
- Procedure StopNote(channel, noteNum : Integer);
- Procedure MIDIMessage(destination, numBytes, message, dataByte1, dataByte2 : integer);
- Procedure KillAllNotes;
- Procedure SetTuningTable(table : ptr);
- Procedure GetTuningTable(table : ptr);
- Procedure SetTempo(tempo : integer);
- Procedure SetBeat(duration : integer);
- Procedure SetRecTrack(trackNum : integer);
- Procedure SetPlayTrack(trackNum, playState : integer);
- Procedure SeqPlayer(sequence : SeqPlayRecPtr);
- Procedure SetMetro(volume, frequency : Integer; wave : ptr);
- Procedure TrackToChannel(trackNum, channel : Integer);
- Procedure SetTrackOut(trackNum, path : Integer);
- Procedure Merge(buffer1, buffer2 : ptr);
- Function Locate(timeStamp : longint; seqBuffer : ptr) : SeqItemRecPtr;
- Function LocateEnd(seqBuffer : ptr) : ptr;
- Procedure DeleteTrack(trackNum : Integer; sequence : ptr);
- Function ConvertToTime(ticksPerBeat, beats, beatNum, measure : Integer) : Longint;
- Function ConvertToMeasure(ticksPerBeat, beats : Integer; seqClockTics : Longint) : MeasureRec ;
-
- Implementation
-
- End.
-